<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>RunJRun</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
      <h1><b>RunJRun: Parallel Processing for Java on EC2 Instances</b></h1>
   
    <p><span style="font-style: italic;">
            <a href="http://norbl.com/runjrun.html">RunJRun</a></span> is a very simple system
for doing parallel processing in Java, using Amazon Elastic Compute
Cloud (<a href="http://aws.amazon.com/ec2/">EC2</a>) instances as
compute nodes.</p>

    <p>The basic compute unit is a <span style="font-family: monospace;"><span
 style="text-decoration: underline;"><a
 href="http://java.sun.com/javase/6/docs/api/java/lang/Runnable.html">Runnable</a></span>,&nbsp;<span
 style="text-decoration: underline;"><a
 href="http://java.sun.com/javase/6/docs/api/java/io/Serializable.html">Serializable</a></span>
</span>Java object, a 'task' for short. A user submits a list of such tasks to
<span style="font-style: italic;">RunJRun</span>.&nbsp; Each task then has
its <span style="font-family: monospace;">run()</span> method invoked
on an EC2 instance.&nbsp; Optionally, the 'cooked' task object can be
stored in S3.</p>


    <p><span style="font-style: italic;">RunJRun</span> uses SQS and S3 to
make tasks available to compute nodes.&nbsp; These services scale very
well, so <span style="font-style: italic;">RunJRun</span> can handles
large numbers of tasks and EC2 instances.<a href="#note0">&sect;</a></p>

    <p>A <span style="font-style: italic;">RunJRun</span> compute node
executes one <span style="font-family: monospace;">run()</span> method
at a time, so that a task has exclusive use of an EC2 instance.&nbsp;
(To fully utilize EC2 instances, you may want make your tasks
multi-threaded. See&nbsp;
<a href="http://norbl.com/manual_how_to_use_runjrun.html#multi-thread_tasks">Multi-thread
tasks</a> in the&nbsp; <span style="font-style: italic;">RunJRun </span>

    <a href="http://norbl.com/manual_toc.html">manual</a>).</p>

 <p><span style="font-style: italic;">RunJRun </span>is written in Java
and is implemented as an api.</p>

 <p><span style="font-style: italic;">RunJRun</span> itself is free,
open-source software.&nbsp; To use it, you'll need an Amazon Machine
Image (AMI) that has the <span style="font-style: italic;">RunJRun </span>compute node
software installed.&nbsp; Several
such <a href="http://norbl.com/runjrun_amis.html">AMIs</a>
are available; these are&nbsp;<a href="http://aws.amazon.com/devpay/">DevPay</a>
AMIs - you'll be charged $0.03/hour to use them, in addition to Amazon's regular charges. Or
you can construct your own <span style="font-style: italic;">RunJRun</span> AMI<span
 style="font-style: italic;"></span>.</p>

 <p><span style="font-style: italic;"></span>For succinct instructions on
using <span style="font-style: italic;">RunJRun</span>, see <span
 style="text-decoration: underline;"><a href="http://norbl.com/quickstart.html">Quick
Start</a></span>.&nbsp; For
more details, see the <a href="http://norbl.com/manual_toc.html">manual</a>.</p><br>

 <p><small><a name="note0"></a>&sect; In practice, the only real limit is
the
availability of EC2 instances.
By default, Amazon currently limits an AWS user to 20 instances at a
time, but you can request a larger quota (I routinely run 40).
</small></p>
<br>
  </body>
</html>
